Operating a storage server on a virtual machine

ABSTRACT

A system and method of testing, during development, the operation of a clustered storage server system and its associated storage operating system. The system includes at least one host computer having a host operating system, and at least one virtual computer having a simulated storage operating system, at least one simulated disk, a simulated NVRAM, and a simulated flashcard within a guest operating system hosted by the host operating system. The simulated storage operating system represents an actual storage operating system. Facilities of the simulated storage operating system including the simulated disk, the simulated NVRAM, and the simulated flashcard are mapped onto corresponding facilities of the host operating system via virtualization components of the virtual computer so that the simulated storage operating system operates substantially the same as the actual storage operating system on low cost host hardware platforms.

CROSS REFERENCE TO RELATED APPLICATIONS

—Not applicable—

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

—Not applicable—

BACKGROUND OF THE INVENTION

The present invention relates generally to network data storage systems,and more specifically to simulating a network data storage operatingsystem as a virtualized operating system of a virtual computer.

As computer networks have become faster and more reliable, thedeployment of network data storage systems in enterprise computingenvironments has become more widespread. In a typical enterprisecomputing environment, client systems such as computer workstations,database servers, web servers, and other application servers can accessdata stored remotely from the client systems, typically in one or morecentral locations. One or more computer networks, e.g., one or morelocal area networks (LANs) or wide area networks (WANs), connect theclient systems to mass storage devices such as disks disposed at thecentral locations. Such centralized data storage, referred tohereinafter as network data storage, facilitates the sharing of dataamong many geographically distributed client systems. Network datastorage also enables information systems (IS) departments to use highlyreliable (sometimes redundant) computer equipment to store their data.

In the typical network data storage environment, specialized computerssuch as file servers, storage servers, storage appliances, etc.(referred to hereinafter as storage servers) located at the centrallocations make the data stored on the disks available to the clientsystems. For example, a storage server can have a monolithicarchitecture, in which network and data components are contained withina single device. Software running on the storage servers and othersoftware running on the client systems communicate according towell-known protocols, such as the Network File System (NFS) protocol,the Common Internet File System (CIFS) protocol, and the Direct AccessFile System (DAFS) protocol, to make the data stored on the disks appearto users and application programs as though the data were stored locallyon the client systems. Each storage server makes data available to theclient systems by presenting or exporting one or more volumes to theclient systems. Each volume is configured to store data files, scripts,word processing documents, executable programs, and the like. From theperspective of a client system, each volume can appear to be a singledisk drive. However, each volume can represent the storage space in asingle storage device, a redundant array of independent disks (RAID) ora RAID set, an aggregate of some or all of the storage space in a set ofstorage devices, or any other suitable set of storage space.

In addition, multiple storage servers can be arranged in a clusterconfiguration to form a single storage server system. Such a clusteredstorage server system has a distributed architecture that includes aplurality of server nodes interconnected by a switching fabric. Eachserver node typically includes a network module (an N-module), a diskmodule (a D-module), and a management module (an M-host). The N-moduleprovides functionality that enables a respective node within theclustered system to connect to a client system over a computer network,the D-module provides functionality enabling the respective node toconnect to one or more disks, and the M-host provides managementfunctions for the clustered system. A switched virtualization layer isprovided below the interface between the N-modules and the clientsystems, allowing the disks associated with the multiple nodes in thecluster configuration to be presented to the client systems as a singleshared storage pool.

In a typical mode of operation, a client system transmits an NFS, CIFS,or DAFS request for data to one of the server nodes within the clusteredsystem. The request typically includes a file handle for a data filestored in a specified volume. The N-module within the node that receivedthe request extracts a volume identifier from the file handle, and usesthe volume identifier to index a volume location database (VLDB) toobtain an identification of an aggregate storing the specified volume.The N-module then uses the aggregate identification to locate theD-module responsible for the aggregate, and transmits a request to theD-module for the data on the specified volume using an internalprotocol. The D-module executes the request, and transmits, using theinternal protocol, a response containing the requested volume data backto the N-module, which in turn transmits an NFS, CIFS, or DAFS responsewith the requested data to the client system. In this way, the N-modulescan export, to the client systems, one or more volumes that are storedon aggregates accessible via the D-modules.

A storage operating system executes on a network data storage system tomanage the storage system and to implement file system semantics. Thestorage operating system must be robust to prevent data loss from errorconditions arising while executing on the network data storage system.Accordingly, during development, the storage operating system isgenerally thoroughly tested before being released for use in actual dataserving environments.

One known method of performing tests of a storage operating systemduring development includes simulating the storage operating system on ahost computer by executing portions of the storage operating system as auser-level application on the host computer. During execution of theuser-level application on the host computer, simulated disks associatedwith the simulated storage operating system are represented by files onthe host computer's file system. Further, write operations from a diskdriver module of the simulated storage operating system are converted tofile-level operations by the host's operating system. Similarly, networkprotocol communications, such as by TCP/IP, are passed from thesimulated storage operating system to the host computer's operatingsystem for processing. In addition, to simulate a cluster of storageappliances, two separate instantiations of the simulated storageoperating system are executed as separate processes running on the hostcomputer. However, the above-described method of simulating a storageoperating system does not provide a simulation of the entire storageoperating system as it would normally operate in an actual clusterenvironment.

It would therefore be desirable to have a system and method of testing,during development, the operation of a clustered storage server systemand its associated storage operating system that allows the entirestorage operating system to be simulated as it would normally operate inan actual cluster environment. Such a system and method of testing theoperation of a clustered storage server system would facilitate thetesting of the clustered system on low cost computer hardware platforms.

BRIEF SUMMARY OF THE INVENTION

In accordance with the present invention, a system and method oftesting, during development, the operation of a clustered storage serversystem and its associated storage operating system is disclosed thatallows the entire storage operating system to be simulated as it wouldoperate within an actual cluster environment. The presently disclosedsystem and method facilitates the testing of the clustered system andits associated storage operating system on low cost computer hardwareplatforms.

Unlike existing methods of simulating a storage operating system inwhich portions of the storage operating system are executed as auser-level application on a host computer, the disclosed system andmethod allows the entire storage operating system to be simulated byexecuting it within a guest operating system of a virtual machineoperating on a host computer. In one embodiment, one or moreinstantiations of the simulated storage operating system are executed asone or more guest operating systems of virtual machines operating on thesame host computer hardware, thereby allowing multiple instantiations ofthe simulated storage operating system to co-exist on the same hostcomputer with a high degree of isolation from one another. In anotherembodiment, multiple instantiations of the simulated storage operatingsystem are executed as multiple guest operating systems of virtualmachines operating simultaneously on multiple host computersinterconnected by one or more computer networks, thereby forming avirtual cluster environment. In such a virtual cluster environment, eachvirtual machine operating on a respective host computer can represent aserver node of an actual clustered storage server system.

By executing each simulated storage operating system as a guestoperating system of a virtual machine operating on a respective hostcomputer, a virtual clustered storage server system can be createdhaving functionality that is practically indistinguishable from anactual clustered storage server system. Further, by using a combinationof virtual machine devices and internal device emulation extensions,facilities of the simulated storage operating system, including thosetypically implemented by high cost components such as disks,non-volatile RAMs (NVRAMs), and compact flashcards, can be mapped ontolower cost peripherals associated with the host hardware platform viathe virtual facilities of a virtual machine. For example, one or moresimulated disks, a simulated NVRAM, and/or a simulated flashcard can bemapped onto a low cost disk of the host computer via a virtual disk ofthe virtual machine. Other facilities of the simulated storage operatingsystem such as emulated cluster network adapters and/or emulated dataand management network adapters can also be mapped, via virtualinterfaces of the virtual machine, onto corresponding host interfaces ofthe host hardware platform. The combined use of virtual machine devicesand internal device emulation extensions allows numerous disks,memories, and/or network adapters of different types to be simulated.The end result is a simulated software system that is largely unmodifiedfrom an actual system, and whose operation closely resembles actualsystem behavior, thereby permitting highly accurate simulations ofactual data storage system configurations for both test and development.

In one embodiment, the presently disclosed system includes at least onehost computer having a host operating system, and at least one virtualcomputer operating on the host computer. The virtual computer has aguest operating system, which is hosted by the host operating system ofthe host computer. The virtual computer also has, within the guestoperating system, at least one simulated storage operating system and atleast one simulated disk for storing data of at least one virtualvolume. To test the operation of the storage operating system, the hostcomputer can receive at least one user command for manipulating (i.e.,reading or writing) data of a specified virtual volume stored on thesimulated disk. In response to the user command, the simulated storageoperating system executes within the guest operating system tomanipulate the data of the specified virtual volume stored on thesimulated disk in accordance with the user command. The virtual computerhas, within the guest operating system, at least one simulatednon-volatile memory for storing a record of the user command, and atleast one emulated management network adapter for receiving the usercommand from the host computer.

In another embodiment, the presently disclosed system includes one ormore host computers, and a plurality of virtual computers operating onthe respective host computers. Each of the respective virtual computershas, within a respective guest operating system, a simulated storageoperating system, at least one simulated disk for storing data of atleast one virtual volume, and an emulated cluster network adapter. Inthis embodiment, each virtual computer can represent a server node of aclustered storage server system. The respective virtual computers can becommunicably interconnected over at least one computer network via therespective emulated cluster network adapters and the respective hostcomputers to form a simulated clustered storage server system.

Other features, functions, and aspects of the invention will be evidentfrom the Detailed Description of the Invention that follows.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The invention will be more fully understood with reference to thefollowing Detailed Description of the Invention in conjunction with thedrawings of which:

FIG. 1 is a block diagram of a clustered storage server system includinga plurality of server nodes;

FIG. 2 is a block diagram illustrating a node of the clustered storageserver system of FIG. 1;

FIG. 3 is a block diagram illustrating a storage operating system thatis executable on the clustered storage server system of FIG. 1;

FIG. 4 is a block diagram of the storage operating system of FIG. 3modified to execute on a conventional computer hardware platform;

FIG. 5 is a block diagram of the storage operating system of FIG. 3modified to execute as a virtualized operating system of a virtualcomputer;

FIG. 6 is a block diagram of multiple instantiations of the storageoperating system of FIG. 5; and

FIG. 7 is a flow diagram illustrating a method of testing the operationof a simulated storage server system and its associated storageoperating system according to the present invention.

DETAILED DESCRIPTION OF THE INVENTION

A system and method of testing, during development, the operation of aclustered storage server system and its associated storage operatingsystem is disclosed that allows multiple instantiations of a simulatedstorage operating system to co-exist on the same host computer with ahigh degree of isolation from one another. The presently disclosedsystem and method also allows the respective instantiations of thesimulated storage operating system to operate on separate host computersto create a virtual clustered storage server system having functionalitythat is practically indistinguishable from an actual clustered storageserver system. The presently disclosed system and method of testing theoperation of a clustered storage server system facilitates the testingof the clustered system and its associated storage operating system onlow cost computer hardware platforms.

A. Clustered Storage Server System

FIG. 1 depicts an illustrative embodiment of a network data storageenvironment 100, including a plurality of client systems 104.1-104.2, aclustered storage server system 102, and at least one computer network106 communicably interconnecting the client systems 104.1-104.2 and theclustered storage server system 102. As shown in FIG. 1, the clusteredstorage server system 102 includes a plurality of server nodes108.1-108.3, a cluster switching fabric 110, and a plurality of massstorage devices such as disks 112.1-112.2 and a disk shelf includingdisks 112.3 a-112.3 b. Each of the plurality of nodes 108.1-108.3 isconfigured to include an N-module, a D-module, and an M-host, each ofwhich can be implemented as a separate software module. Specifically,the node 108.1 includes an N-module 114.1, a D-module 116.1, and anM-host 118.1, the node 108.2 includes an N-module 114.2, a D-module116.2, and an M-host 118.2, and the node 108.3 includes an N-module114.3, a D-module 116.3, and an M-host 118.3. The N-modules 114.1-114.3include functionality that enables the respective nodes 108.1-108.3 toconnect to one or more of the client systems 104.1-104.2 over thecomputer network 106, while the D-modules 116.1-116.3 connect to one ormore of the disks 112.1-112.2 and the disk shelf 122. The M-hosts118.1-118.3 provide management functions for the clustered storageserver system 102.

A switched virtualization layer including a plurality of virtual networkinterfaces (VIFs) is provided below the interface between the respectiveN-modules 114.1-114.3 and the client systems 104.1-104.2, allowing thedisks 112.1-112.2, 112.3 a-112.3 b associated with the respective nodes108.1-108.3 to be presented to the client systems 104.1-104.2 as asingle shared storage pool. The nodes 108.1-108.3 are interconnected bythe switching fabric 110, which, for example, may be embodied as aGigabit Ethernet switch. Although FIG. 1 depicts an equal number (i.e.,3) of N-modules 114.1-114.3, D-modules 116.1-116.3, and M-Hosts118.1-118.3, any other suitable number of N-modules, D-modules, andM-Hosts may be provided. There may also be different numbers ofN-modules, D-modules, and/or M-Hosts within the clustered storage serversystem 102. For example, in alternative embodiments, the clusteredstorage server system 102 may include a plurality of N-modules and aplurality of D-modules interconnected in a configuration that does notreflect a one-to-one correspondence between the N-modules and D-modules.The clustered storage server system 102 can include the NETAPP® DATAONTAP® storage operating system, available from NetApp, Inc., Sunnyvale,Calif., USA, that implements the WAFL® file system, or any othersuitable storage operating system.

The client systems 104.1-104.2 of FIG. 1 may be implemented asgeneral-purpose computers configured to interact with the respectivenodes 108.1-108.3 in accordance with a client/server model ofinformation delivery. In the presently disclosed embodiment, theinteraction between the client systems 104.1-104.2 and the nodes108.1-108.3 enable the provision of network data storage services.Specifically, each client system 104.1, 104.2 can request the servicesof the respective node 108.1, 108.2, 108.3, and that node can return theresults of the services requested by the respective client system byexchanging packets over the computer network 106, which may bewire-based, optical fiber, wireless, or any other suitable combinationthereof. The client systems 104.1-104.2 can issue packets according tofile-based access protocols such as the Network File System (NFS)protocol, the Common Internet File System (CIFS) protocol, and theDirect Access File System (DAFS) protocol over the Transmission ControlProtocol/Internet Protocol (TCP/IP), when accessing information in theform of files and directories. In an alternative embodiment, the clientsystems 104.1-104.2 can issue packets including block-based accessprotocols, such as the Small Computer Systems Interface (SCSI) protocolencapsulated over TCP (iSCSI) or the Fibre Channel Protocol (FCP), whenaccessing information in the form of blocks. It is noted that thenetwork data storage environment 100 supports file-based and/orblock-based access requests.

In a typical mode of operation, one of the client systems 104.1-104.2transmits an NFS, CIFS, or DAFS request for data to one of the nodes108.1-108.3 within the clustered storage server system 102. The clientrequest typically includes a file handle for a data file stored in aspecified volume on one or more of the disks 112.1-112.2, 112.3 a-112.3b. The N-module included in that node processes the client request,translating the request into a Remote Procedure Call (RPC) using aninternal protocol, such as the SpinNP protocol available from NetApp,Inc. Next, the N-module transmits the SpinNP RPC over the clusterswitching fabric 110 to the node that includes the D-module associatedwith the target volume. Upon receipt of the SpinNP RPC, the D-module ofthe node responsible for the target volume processes the RPC. TheD-module then transmits an internal SpinNP response containing therequested data to the N-module, which, in turn, transmits an NFS, CIFS,or DAFS response containing the requested data to the client system.

FIG. 2 depicts an illustrative embodiment 208 of one of the server nodes108.1-108.3 included in the network data storage environment 100 (seeFIG. 1). As shown in FIG. 2, the node 208 is embodied as a storagesystem including a plurality of processors 236 a, 236 b, at least onememory 237, a flashcard 233, a non-volatile RAM (NVRAM) 234, and aplurality of adapters interconnected by a system bus 244. The pluralityof adapters includes a network adapter 230 for cluster traffic (referredto hereinafter as a cluster network adapter), a network adapter 231 formanagement traffic (referred to hereinafter as a management networkadapter), a network adapter 232 for data traffic (referred tohereinafter as a data network adapter), and an adapter 235 for storagetraffic (referred to hereinafter as a storage adapter). The clusternetwork adapter 230 and the management network adapter 231 each includea plurality of ports adapted to couple the node 208 to other ones of thenodes within the clustered storage server system 102. In the illustratedembodiment, Ethernet is used as the clustering protocol and interconnectmedia, although any other suitable types of protocols and interconnectsmay be employed. In alternative embodiments in which the N-modules andthe D-modules are implemented on separate storage systems or computers,the cluster network adapter 230 is utilized by the N-modules or theD-modules for communicating with other network or disk modules withinthe network data storage environment 100.

As shown in FIG. 2, the node 208 is illustratively embodied as a dualprocessor storage system executing a storage operating system 238, whichimplements a high-level module such as a file system for logicallyorganizing stored information as a hierarchical structure of nameddirectories, files, and blocks on the disks 112.1-112.2, 112.3 a-112.3b. In the illustrated embodiment, the dual processor storage system alsoexecutes an operating system (OS) kernel 239 such as the FreeBSDoperating system kernel that manages the interaction between hardwarecomponents and higher-level software applications running on the node208. It will be apparent to those of ordinary skill in the art that thenode 208 may alternatively comprise a single processor system, or aprocessor system with more than two processors. In the illustratedembodiment, the processor 236 a executes the functions of an N-module,while the processor 236 b executes the functions of a D-module.

The memory 237 illustratively comprises storage locations that areaddressable by the processors 236 a, 236 b and the various adapters 230,231, 232, 235 for storing software program code and data structures. Thestorage operating system 238, portions of which are typically residentin the memory 237 and executed by the processors 236 a-236 b,functionally organizes the node 208 by invoking storage operations insupport of the storage service implemented by the node 208. It will beapparent to those skilled in the art that other processing and memorymeans, including various computer readable media, may be employed forstoring and executing program instructions.

The data network adapter 232 comprises a plurality of ports adapted tocouple the node 208 to one or more of the client systems 104.1-104.2over point-to-point links, wide area networks (WANs), virtual privatenetworks (VPNs) implemented over a public network (e.g., the Internet),or a shared local area network (LAN). The data network adapter 232 maytherefore comprise mechanical, electrical, optical, or other connectionand signaling components to connect the node 208 to a network. Forexample, the computer network 106 may be embodied as an Ethernetnetwork, a Fiber Channel (FC) network, or any other suitable network.Each of the client systems 104.1-104.2 can communicate with the node 208over the network 106 by exchanging discrete frames or packets of dataaccording to pre-defined protocols, such as TCP/IP.

The storage adapter 235 cooperates with the storage operating system 238executing on the node 208 to access information requested by the clientsystems 104.1-104.2. The information may be stored on any type ofattached array of writable storage device media such as video tape,optical, DVD, magnetic tape, bubble memory, electronic random accessmemory, micro-electro mechanical, and any other suitable media adaptedto store information. In the illustrated embodiment, such informationcan be stored on the disks 112.1-112.2 and/or on the disks 112.3 a-112.3b of the disk shelf 122. The storage adapter 235 comprises a pluralityof ports having input/output (I/O) interface circuitry that couples tothe disks over an I/O interconnect arrangement such as ahigh-performance FC link topology.

The NVRAM 234 is a battery-backed non-volatile memory that is includedin the node 208 to improve overall system performance. For example,responsive to a data write request of one of the client systems104.1-104.2, data written by the respective client system can initiallybe stored in the NVRAM 234 before the node 208 acknowledges thecompletion of the data write request. The data can then be transferredto one of the disks 112.1-112.2 or to the disk shelf 122. Within theclustered storage server system 102, each of the nodes 108.1-108.3 canmaintain a copy of the data stored in the NVRAM of the other nodes toassure that each node in the clustered system 102 can takeover theoperations and workload of another node in the event of a node failure.After taking over from a node that failed, a node can handle fileservice requests that are normally routed to it from the client systems104.1-104.2 in addition to file service requests that had beenpreviously handled by the failed node.

The flashcard 233 is included in the node 208 to facilitate the shippingof software program code updates and/or the downloading of stored datato a local or remote computer for further processing and analysis. Forexample, the flashcard 233 may be implemented as a removable compactflashcard device.

B. Storage Operating System

In the illustrated embodiment, the storage operating system 238 ispreferably the NETAPP® DATA ONTAP® storage operating system, availablefrom NetApp, Inc., which implements a Write Anywhere File Layout (WAFL®)file system. It is understood, however, that any other suitable storageoperating system implementing any other suitable file system may beemployed.

As shown in FIG. 3, the storage operating system 238 comprises a seriesof software layers organized to form an integrated network protocolstack or, more generally, a multi-protocol engine 340 that provides datapaths for the client systems 104.1-104.2 to access information stored onthe respective nodes 108.1-108.3 using block and file access protocols.The multi-protocol engine 340 includes a media access layer 345 ofnetwork drivers, for example, gigabit Ethernet drivers, that interfacesto network protocol layers, such as an IP layer 344 and supportingtransport mechanisms, namely, a TCP layer 343 and a User DatagramProtocol (UDP) layer 348. A file system protocol layer providesmulti-protocol file access and, to that end, includes support for a DAFSprotocol 341, an NFS protocol 347, a CIFS protocol 349, and a HypertextTransfer Protocol (HTTP) 350. A virtual interface (VI) layer 342implements the VI architecture to provide direct access transport (DAT)capabilities, such as RDMA, as required by DAFS protocol 341. An iSCSIdriver layer 355 provides block protocol access over the TCP/IP networkprotocol layers, while an FC driver layer 356 receives and transmitsdata access requests to and responses from a respective node. The FC andiSCSI drivers provide FC-specific and iSCSI-specific access control tothe data and manage exports of logical units (luns) to the iSCSI or FCcomponents. Incoming data access requests are converted into file systemcommands that are embedded within cluster fabric (CF) protocol messagesby CF interface modules 346 a-346 b, which cooperate to provide a singlefile system image across all disk modules of the clustered storageserver system 102.

In addition, the storage operating system 238 includes a series ofsoftware layers organized to form a storage server 365 that providesdata paths for accessing information stored on the disks 112.1-112.2 andon the disk shelf 122. The storage server 365 includes a file systemmodule 361 for managing volumes 359, a RAID system module 362, and adisk driver system module 363. The RAID system 362 manages the storageand retrieval of information to and from the volumes/disks in accordancewith I/O operations, while the disk driver system 363 implements a diskaccess protocol such as, e.g., the SCSI protocol. It is noted that anaggregate, i.e., a collection of volumes, can be divided into a numberof virtual volumes, which can be manipulated (read from or written to)through one or more virtual storage servers hosted by the hardware ofthe server node 208.

The file system 361 implements a virtualization system of the storageoperating system 238 through interaction with one or more virtualizationmodules illustratively embodied as, e.g., a virtual disk (vdisk) module366 and a SCSI target module 354. The vdisk module 366 enables access byadministrative interfaces, such as a user interface of a managementframework, in response to a user (system administrator) issuing commandsto one of the nodes 108.1-108.3. The SCSI target module 354 is disposedbetween the FC and iSCSI drivers 355, 356 and the file system 361 toprovide a translation layer of the virtualization system between theblock (lun) space and the file system space, where luns are representedas blocks.

The file system 361 is illustratively a message-based system thatprovides logical volume management capabilities for use in access to theinformation stored on the disks 112.1-112.2 and on the disk shelf 122.That is, in addition to providing file system semantics, the file system361 provides functions normally associated with a volume manager. Thesefunctions include aggregation of the disks, aggregation of storagebandwidth of the disks, and reliability guarantees, such as mirroringand/or parity. The file system 361 illustratively implements the WAFL®file system having an on-disk format representation that is block-based,and using index nodes (inodes) to identify files and file attributes(such as creation time, access permissions, size, and block location).It is understood, however, that the file system 361 may implement anyother suitable file system. The file system 361 uses files to storemetadata such as that describing the layout of its file system. Thesemetadata files include, among others, an inode file. A file handle,i.e., an identifier that includes an inode number, is used to retrievean inode from a disk.

Operationally, a request from one of the client systems 104.1-104.2 isforwarded as a packet over the computer network 106 to one of the nodes108.1-108.3 where it is received at the data network adapter 232. Anetwork driver (of the layer 345 or the layer 356) processes the packetand, as appropriate, passes it on to a network protocol and file accesslayer for additional processing prior to forwarding to the file system361. Here, the file system 361 generates operations to load (retrieve)the requested data from one of the disks 112.1, 112.2 or from the diskshelf 122 if it is not cached in the memory 237. If the information isnot in the memory 237, then the file system 361 indexes into the inodefile using the inode number to access an appropriate entry and retrievea logical volume block number (VBN). The file system 361 then passes amessage structure including the logical VBN to the RAID system 362. Thelogical VBN is mapped to a disk identifier and disk block number (DBM),and sent to an appropriate driver (e.g., SCSI) of the disk driver system363, which accesses the DBN from the specified disk and loads therequested data block(s) in memory for processing by the respective node.Upon completion of the processing of the client request, the respectivenode typically returns a response to the client system over the network106.

C. Simulated Storage Operating System

To facilitate the testing, during development, of the clustered storageserver system 102 (see FIG. 1) and its associated storage operatingsystem 238/239 (see FIGS. 2-3), a simulated storage operating system 501is provided that can be executed in a virtualized computer environment500 (see FIG. 5). The presently disclosed simulated storage operatingsystem 501 will be better understood following the discussion belowrelating to how the storage operating system 238/239 can be modified toallow a representation of the clustered storage server system 102 to beimplemented on a computer hardware platform that does not include theflashcard 233, the non-volatile memory (NVRAM) 234, the disks112.1-112.2, or the disk shelf 122 of the clustered system 102.

FIG. 4 depicts an illustrative embodiment of a storage operating system438/439 modified to execute in a computer environment 400 comprising acomputer hardware platform that does not include a flashcard, anon-volatile memory (NVRAM), and disks for storing volume data. In theillustrated embodiment, the computer environment 400 includes thestorage operating system 438 such as the NETAPP® DATA ONTAP® storageoperating system, the operating system kernel 439 such as the FreeBSDoperating system kernel, a cluster network adapter 430, and a data andmanagement network adapter 431. As discussed above, the computerenvironment 400 does not include the flashcard 233 (see FIG. 2), thenon-volatile memory (NVRAM) 234 (see FIG. 2), nor does it include thedisks 112.1-112.2 or the disk shelf 122 (see FIG. 1) for storing volumedata.

Accordingly, the computer environment 400 includes a simulated NVRAM. Inthis context, the simulation of the NVRAM means that the operation ofthe NVRAM is represented by a Random Access Memory (RAM) 434 backed-upby a data file 471 contained in a standard mass storage device such as adisk 470. The simulated NVRAM is accessible via the operating systemkernel 439. The computer environment 400 also includes a plurality ofsimulated disks and a simulated disk shelf. Each of the simulated disksis implemented by a virtual disk (vdisk) backed-up by a data filecontained in the disk 470 and accessible via the operating system kernel439. Specifically, a first simulated disk is implemented by a vdisk412.1 backed-up by a data file 472, and a second simulated disk isimplemented by a vdisk 412.2 backed-up by a data file 473. Similarly,third and fourth simulated disks of a simulated disk shelf 422 areimplemented by vdisks 412.3 a, 412.3 b backed-up by data files 474 a,474 b, respectively. In addition, the computer environment 400 includesa simulated flashcard implemented by a standard mass storage device suchas a disk 433 accessible via the operating system kernel 439. Asillustrated in FIG. 4, the disk 433 is separate from the disk 470. Inone embodiment, the simulated flashcard is implemented by the separatedisk 433 to allow program code updates and/or data to be downloaded tothe simulated flashcard without impacting the simulated NVRAM or thesimulated disks which are backed-up by respective data files containedin the disk 470. In alternative embodiments, the simulated flashcard canbe implemented as a data file contained in the disk 470, or as apartition of the disk 470. By configuring the storage operating system438/439 to operate in conjunction with the simulated flashcard 433, thesimulated NVRAM 434/471, and the simulated disks 412.1/472, 412.2/473,412.3 a/474, 412.3 b/475 in the computer environment 400, the storageoperating system 438/439 can be configured to execute on computerhardware platforms that do not include flashcards, non-volatilememories, and disks for storing volume data.

It is noted that the cluster network adapter 430, the data andmanagement network adapter 431, the RAM 434, and the vdisks 412.1-412.2,412.3 a-412.3 b are illustrated in FIG. 4 as being directly connected tothe storage operating system 438 for clarity of illustration. It will beapparent to those of ordinary skill in the art that, in a practicalimplementation, the operating systems 438/439, the RAM 434, and thevdisks 412.1-412.2, 412.3 a-412.3 b can be implemented in one or moresuitable memories communicably interconnected with the cluster networkadapter 430, the data and management network adapter 431, the disk 433,and the disk 470 via one or more suitable buses. It will be furtherappreciated that, in a practical implementation, the computerenvironment 400 can include one or more processors operative to executethe storage operating systems 438/439 and software applications out ofat least one memory.

The storage operating system 438/439 in the computer environment 400 canbe further modified to execute as a virtualized (guest) operating systemof a virtual computer (virtual machine). FIG. 5 depicts an illustrativeembodiment of the virtualized computer environment 500, including thesimulated storage operating system 501 executing as a guest operatingsystem of a virtual machine, in accordance with the present invention.Unlike prior methods of simulating a storage operating system in whichportions of the storage operating system are executed as a user-levelapplication on a host computer, the virtualized computer environment 500allows an entire storage operating system to be simulated by executingthe storage operating system 501 as a guest operating system of avirtual machine operating on a host computer. One or more instantiationsof the simulated storage operating system 501 can be executed as one ormore guest operating systems of virtual machines operatingsimultaneously on the same host computer hardware, thereby allowingmultiple instantiations of the simulated storage operating system toco-exist on the same host computer with a high degree of isolation fromone another. Alternatively, multiple instantiations of the simulatedstorage operating system 501 can be executed as multiple guest operatingsystems of virtual machines operating simultaneously on multiple hostcomputers interconnected by one or more computer networks, therebyforming a virtual cluster environment. In such a virtual clusterenvironment, each virtual machine operating on a respective hostcomputer can represent a server node of an actual clustered storageserver system. By executing each simulated storage operating system 501as a guest operating system of a virtual machine operating on arespective host computer, a virtual clustered storage server system canbe created having functionality that is practically indistinguishablefrom an actual clustered storage server system. In addition, facilitiesof the storage operating system, including high cost components such asthe mass storage devices, the non-volatile RAM, and the flashcard can bemapped onto one or more lower cost peripherals associated with the hosthardware platform via the virtual facilities of a virtual machine.

As shown in FIG. 5, the virtualized computer environment 500 comprisesthe simulated storage operating system 501 including a storage operatingsystem 538 such as the NETAPP® DATA ONTAP® storage operating system orany other suitable storage operating system, an operating system kernel539 such as the FreeBSD operating system kernel or any other suitableoperating system kernel, one or more emulated cluster network adapters530 a-530 b, and at least one emulated data and management networkadapter 531. Like the computer environment 400, the virtualized computerenvironment 500 includes a simulated NVRAM implemented by a RAM 534backed-up by a data file 571 contained in standard mass storage such asa disk 570, a first simulated disk implemented by a vdisk 512.1backed-up by a data file 572 contained in the disk 570, a secondsimulated disk implemented by a vdisk 512.2 backed-up by a data file 573contained in the disk 570, a third simulated disk implemented by a vdisk512.3 a backed-up by a data file 574 a contained in the disk 570, and afourth simulated disk implemented by a vdisk 512.3 b backed-up by a datafile 574 b contained in the disk 570. The virtualized computerenvironment 500 also includes a simulated flashcard implemented by astandard mass storage device such as a disk 533 accessible via theoperating system kernel 539. As illustrated in FIG. 5, the disk 533 isseparate from the disk 570. As discussed above with reference to thesimulated flashcard of FIG. 4, the simulated flashcard of FIG. 5 can beimplemented in alternative embodiments as a data file contained in thedisk 570, or as a partition of the disk 570. Accordingly, the simulatedstorage operating system 501 is configured to provide the functionalityof a server node, including its associated disk(s) for storing volumedata, within a clustered storage server system.

In addition, the virtualized computer environment 500 includesvirtualization components 580, an underlying computer (host) softwareoperating system 591, and an underlying host computer hardware platform595. As shown in FIG. 5, the virtualization components 580 includevirtual network interfaces 582 a-582 b and a virtual disk 584, and theunderlying host hardware platform 595 includes host network interfaces592 a-592 b and a standard mass storage device such as a host disk 594.For example, the virtualization components 580 may be implemented usingvirtualization software available from VMware, Inc., Palo Alto, Calif.,USA, or any other suitable virtualization software. Further, the hostsoftware operating system 591 may be the OS/X operating system availablefrom Apple, Inc., Cupertino, Calif., USA, the Windows operating systemavailable from Microsoft Corporation, Redmond, Wash., USA, the opensource Linux operating system, or any other suitable software operatingsystem. The virtual interfaces 582 a-582 b are configured to interfacethe emulated cluster network adapters 530 a-530 b and the emulated dataand management network adapter 531 to the respective network interfaces592 a-592 b of the host hardware platform 595.

Accordingly, the host operating system 591 can be executed on the hostcomputer hardware platform 595, while one or more instantiations of thesimulated storage operating system 501 are executed as one or more guestoperating systems running on the host operating system 591. Further, thevirtualization components 580 include virtual interfaces such as thevirtual network interfaces 582 a-582 b and the virtual disk 584, whichprovide a virtualized computer environment in which the simulatedstorage operating system(s) 501 can be run. In this configuration, thefacilities of the simulated storage operating system 501 (including thesimulated disks, the simulated NVRAM, the simulated flashcard, theemulated cluster network adapters 530 a-530 b, and the emulated data andmanagement network adapter 531) can be mapped onto correspondingfacilities of the host operating system 591 via the virtualizationcomponents 580. For example, each simulated disk implemented by a vdiskbacked-up by a data file can be mapped onto the host disk 594 via thevirtual disk 584. Similarly, the simulated NVRAM implemented by the RAM534 backed-up by the data file 571 can be mapped onto the host disk 594via the virtual disk 584. In addition, the simulated flashcardimplemented by the disk 533 can be mapped onto the host disk 594 via thevirtual disk 584. In this way, the simulated disks, the simulated NVRAM,and the simulated flashcard, which are typically implemented by highcost components, can be mapped onto one or more lower cost peripheralsassociated with the host hardware platform 595, such as the host disk594. In addition, the emulated cluster network adapters 530 a-530 b andthe emulated data and management network adapter 531 can be mapped, viathe virtual interfaces 582 a, 582 b, respectively, onto the hostinterfaces 592 a, 592 b of the host hardware platform 595.

It is noted that the emulated cluster network adapters 530 a-530 b, theemulated data and management network adapter 531, the RAM 534, and thevdisks 512.1-512.2, 512.3 a-512.3 b are illustrated in FIG. 5 as beingdirectly connected to the storage operating system 538 for clarity ofillustration. It will be apparent to those of ordinary skill in the artthat, in a practical implementation, the operating systems 538/539, theRAM 534, and the vdisks 512.1-512.2, 512.3 a-512.3 b can be implementedin one or more suitable memories communicably interconnected with theemulated cluster network adapter 530, the emulated data and managementnetwork adapter 531, the disk 533, and the disk 570 via one or moresuitable buses. It will be further appreciated that, in a practicalimplementation, the host hardware platform 595 includes at least oneprocessor operative to execute the storage operating systems 538/539,the host operating system 591, and other software applications out of atleast one memory for use in executing a simulated storage operatingsystem in a virtualized computer environment, as described herein.

As discussed above, multiple instantiations of the simulated storageoperating system 501 can be executed as multiple guest operating systemsrunning simultaneously on the same host computer hardware. FIG. 6depicts two such instantiations of the simulated storage operatingsystem 501, namely, a simulated storage OS instance 601A and a simulatedstorage OS instance 601B, which are operative to run simultaneously on ahost computer platform 690 a. As further discussed above, multipleinstantiations of the simulated storage operating system 501 can beexecuted as multiple guest operating systems running simultaneously ondifferent host computer hardware platforms. FIG. 6 depicts a thirdsimulated storage OS instance 601C, which is operative to runsimultaneously with the instances 601A, 601B on a host computer platform690 b different from the host computer platform 690 a.

It should be appreciated that each of the simulated storage OS instances601A, 601B, 601C is configured to provide the functionality of a servernode of a clustered storage server system, including its associateddisk(s) for storing volume data. To provide the functionality of asimulated clustered storage server system including three nodescorresponding to the respective instances 601A, 601B, 601C, two networkinterconnects 698, 699 are provided between host interfaces 692 a, 692 bof the respective host computers 690 a, 690 b. Specifically, the networkinterconnect 698 is configured to carry cluster traffic for eachinstance 601A, 601B, 601C provided over a cluster network adapter (e.g.,one of the emulated cluster network adapters 530 a-530 b) and anassociated virtual interface (e.g., the virtual interface 582 a).Further, the network interconnect 699 is configured to carry data andmanagement traffic for each instance 601A, 601B, 601C provided over adata and management network adapter (e.g., the emulated data andmanagement network adapter 531) and an associated virtual interface(e.g., the virtual interface 582 b). It is noted that, with regard tothe instances 601A, 601B running on the same host computer platform 690a, cluster traffic can be wrapped back to the respective cluster networkadapters for the instances 601A, 601B through the associated virtualinterfaces. Accordingly, by executing the three simulated storage OSinstances 601A, 601B, 601C as guest operating systems runningsimultaneously on the host computer platforms 690 a, 690 b, it ispossible to test, during development, the operation of a simulatedclustered storage server system having three nodes, each with its ownsimulated storage operating system. It should be appreciated that anysuitable number of simulated storage OS instances may be executed as acorresponding number of guest operating systems running on any suitablenumber of host computer platforms to test the operation of a simulatedstorage server system and its associated storage operating system.

An illustrative method of testing the operation of a simulated storageserver system and its associated storage operating system is describedbelow with reference to FIGS. 5 and 7. As depicted in step 702 (see FIG.7), a data request within the computer environment 500 is received atthe host interface 592 b (see FIG. 5). It is noted that such a requestcan be issued by a user as a command to the simulated storage OSinstance 501 via a user interface of a management framework communicablyconnected to the host computer 590. Moreover, via such a user managementinterface, the user can create one or more virtual volumes containingsimulated data on one or more of the simulated disks 512.1/572,512.2/573, 512.3 a/574, 512.3 b/575. It is further noted that therequest received at the host interface can be a command to write data toone or more virtual volumes of the simulated disks 512.1/572, 512.2/573,512.3 a/574, 512.3 b/575, or a command to read data stored on one ormore virtual volumes of the simulated disks 512.1/572, 512.2/573, 512.3a/574, 512.3 b/575.

The request is then routed, e.g., through the virtual interface 582 band the emulated data and management network adapter 531, to thesimulated storage operating system 538, as depicted in step 704. In theevent the request is a command to write data, a record of the request istypically provided or logged, via the simulated storage operating system538, to the simulated NVRAM 534/571, as depicted in step 706. It isnoted that if the request were a command to read data, then a record ofthe request may or may not be logged to the simulated NVRAM 534/571. Inthe event a record of the request is logged to the simulated NVRAM534/571, the record of the request stored in the simulated NVRAM 534/571is then flushed, through the virtual disk 584, to the host disk 594 forsubsequent access by the host operating system 591, as depicted in step708. Next, based on whether the request is a command to write data or acommand to read data, the data is written to or read from the specifiedsimulated disk 512.1/572, 512.2/573, 512.3 a/574, or 512.3 b/575 via thesimulated storage operating system 538, as depicted in step 710. In theevent the request is a command to write data, the data written to thespecified virtual volume is written, via the virtual disk 584, to thehost disk 594 for subsequent access by the host operating system 591, asdepicted in step 712. In the event the request is a command to readdata, the data is provided to the host interface 592 b via the emulateddata and management network adapter 531 and the virtual interface 582 bfor subsequent access by the user via the user management interface, asdepicted in step 714.

The above-described system and method can be configured to allow asnapshot to be generated of the state of the virtualized computerenvironment 500 at a certain point-in-time, for use in managing thecreation and restoration of database backups. The term SNAPSHOT™, whichis a trademark of NetApp, Inc., generally refers to a rapid generationof an image of data at a certain point-in-time.

It will be appreciated by those of ordinary skill in the art that theabove-described method of testing, during development, the operation ofa simulated storage server system and its associated storage operatingsystem can be practiced using a development host computer operative tocreate one or more images of the simulated storage operating system, toassociate particular images of the simulated storage operating systemwith one or more host computers, to distinguish one or more instances ofthe simulated storage operating system on a particular host computer, toimplement a boot loader for performing initial loads of the simulatedstorage operating system on the respective host computers, to passconfiguration parameters through the boot loader to the simulatedstorage operating system, and to translate requests for volume data intorequests for file data on simulated disks of the simulated storageserver system.

It will be further appreciated by those of ordinary skill in the artthat modifications to and variations of the above-described system andmethod of operating a storage server on a virtual machine may be madewithout departing from the inventive concepts disclosed herein.Accordingly, the invention should not be viewed as limited except as bythe scope and spirit of the appended claims.

What is claimed is:
 1. A virtualized clustered storage server system,comprising: a set of one or more host computers, each having a hostoperating system; and a plurality of virtual computers, each operatingon a host computer of the set of host computers, each of the virtualcomputers having one or more virtualization components and a guestoperating system, said guest operating system being hosted by said hostoperating system of the host computer, wherein each virtual computercomprises a storage server system instance, the storage server systeminstance comprising said guest operating system and at least onefacility including at least one simulated storage device for storingdata of at least one virtual volume, wherein the storage server systeminstances and the simulated storage devices execute within the virtualcomputers to operate as the virtualized clustered storage server system,wherein each storage server system instance is executed as the guestoperating system, wherein each of the set of host computers is operativeto, receive commands of a user for manipulating data of a specifiedvirtual volume of the virtualized clustered storage server system,wherein each command is directed to a specified storage server systeminstance operating on that host computer, and route each of the usercommands to the respective specified storage server system instancethrough a virtual interface of the one or more virtualization componentsof the respective virtual computer, wherein each storage server systeminstance is operative to, transmit, in response to receipt of a routeduser command to manipulate data of a specified virtual volume of adifferent storage server system instance, a request to manipulate thedata of the specified virtual volume to the different storage serversystem instance using one or more emulated cluster network adapters, andmanipulate said data of said specified virtual volume stored on thesimulated storage device in accordance with the respective user command,and wherein said at least one facility of each storage server systeminstance is mapped onto at least one corresponding facility of the hostoperating system of the respective host computer via the virtualizationcomponents of the respective virtual computer.
 2. The system of claim 1wherein said at least one facility of each storage server systeminstance includes at least one simulated non-volatile memory for storingat least one record of at least one user command of the received usercommands.
 3. The system of claim 2: wherein the at least one facility ofeach host operating system includes a host storage device; wherein thevirtualization components of each virtual computer include a virtualstorage device; and wherein the simulated non-volatile memory of eachstorage server system instance is mapped onto said host storage deviceof the respective host operating system via said virtual storage deviceof the respective virtual computer.
 4. The system of claim 2 whereineach host computer includes a host storage device, and wherein eachstorage server system instance is further operative to send a copy ofsaid at least one record out of the respective virtual computer to therespective host computer for subsequent storage on said host storagedevice.
 5. The system of claim 1: wherein said at least one facility ofeach storage server system instance includes at least one emulatedmanagement network adapter; wherein the at least one facility of eachhost operating system includes at least one host interface; wherein thevirtualization components of each virtual computer include at least onevirtual interface; and wherein said at least one emulated managementnetwork adapter of each storage server system instance is mapped ontosaid at least one host interface of the respective host operating systemvia said at least one virtual interface of the respective virtualcomputer.
 6. The system of claim 1 wherein each virtual computer has,within said guest operating system, at least one emulated managementnetwork adapter, and wherein each storage server system instance isfurther operative to receive, into the respective virtual computer viathe emulated management network adapter, the user commands.
 7. Thesystem of claim 1: wherein said user commands include at least onerequest to retrieve data of said specified virtual volume stored by afirst simulated storage device, and wherein a first storage serversystem instance is operative to retrieve the requested data of saidspecified virtual volume from the first simulated storage device, and tosend the retrieved data of said specified virtual volume out of thevirtual computer to the respective host computer for subsequent accessby said user.
 8. The system of claim 1: wherein said user commandsinclude at least one request to write data to said specified virtualvolume stored by a first simulated storage device, and wherein a firststorage server system instance is operative to write said data to saidspecified virtual volume stored by the first simulated storage device.9. The system of claim 8 wherein each host computer includes a hoststorage device, and wherein said first storage server system instance isfurther operative to send, to said host storage device of the respectivehost computer, a copy of the data written to said specified virtualvolume stored on the first simulated storage device.
 10. The system ofclaim 1: wherein said at least one facility of each storage serversystem instance includes at least one emulated cluster network adapter;wherein the at least one facility of each host operating system includesat least one host interface; wherein the virtualization components ofeach virtual computer include at least one virtual interface; andwherein said at least one emulated cluster network adapter of eachstorage server system instance is mapped onto said at least one hostinterface of the respective host operating system via said at least onevirtual interface of the respective virtual computer.
 11. The system ofclaim 1: wherein each virtual computer has, within each respective guestoperating system, at least one emulated cluster network adapter; andwherein the storage server system instance of each virtual computer isoperative to communicate, through the respective host computer, withother storage server system instances of other host computers via therespective emulated cluster network adapters.
 12. The system of claim 1wherein said at least one facility of each storage server systeminstance includes a simulated flashcard for receiving one or more ofsimulated program code and simulated data.
 13. The system of claim 12:wherein the at least one facility of each host operating system includesa host storage device; wherein the virtualization components of eachvirtual computer include a virtual storage device; and wherein thesimulated flashcard of each storage server system instance is mappedonto a host storage device of the respective host operating system viasaid virtual storage device of the respective virtual computer.
 14. Amethod of providing a virtualized clustered storage server system,comprising the steps of: operating a plurality of virtual computers on aset of one or more host computers, each virtual computer having one ormore virtualization components and a guest operating system, said guestoperating system being hosted by a host operating system of the hostcomputer that the virtual computer is operating on, wherein each virtualcomputer comprises a storage server system instance, the storage serversystem instance comprising said guest operating system and at least onefacility including at least one simulated storage device for storingdata of at least one virtual volume, wherein the storage server systeminstances and the simulated storage devices execute within the virtualcomputers to operate as the virtualized clustered storage server system,wherein each storage server system instance is executed as the guestoperating system; for each storage server system instance, mapping saidat least one facility of the storage server system instance onto atleast one corresponding facility of the host operating system of therespective host computer via the virtualization components of therespective virtual computer; receiving, by a first host computer of theset of host computers, a command of a user for manipulating data of aspecified virtual volume of the virtualized clustered storage serversystem, wherein the command is directed to a specific storage serversystem instance operating on the first host computer, and wherein thedata of the specified virtual volume is of a different storage serversystem instance; routing, by the first host computer, the command to thespecific storage server system instance through a virtual interface ofthe one or more virtualization components of the respective virtualcomputer; transmitting, by the specific storage server system instance,a request to the different storage server system instance to manipulatethe data of the specified virtual volume; and manipulating, by saiddifferent storage server system instance, said data of said specifiedvirtual volume stored on the simulated storage device in accordance withthe user command, whereby said at least one facility of each storageserver system instance is mapped onto said at least one correspondingfacility of the host operating system of the respective host computer.15. The method of claim 14: wherein said at least one facility of eachstorage server system instance includes at least one simulatednon-volatile memory for storing at least one record of the user command;wherein the at least one facility of each host operating system includesa host storage device of the respective host computer; wherein thevirtualization components of each virtual computer include a virtualstorage device; and wherein said mapping includes mapping the simulatednon-volatile memory of each storage server system instance onto saidhost storage device of the respective host computer via said virtualstorage device of the respective virtual computer.
 16. The method ofclaim 14 further including storing at least one record of the usercommand in at least one simulated non-volatile memory of the virtualcomputer that includes the different storage server system instance. 17.The method of claim 16 further including sending a copy of said recordout of the virtual computer to the respective host computer forsubsequent storage on a host storage device of the host computer. 18.The method of claim 14: wherein said at least one facility of eachstorage server system instance includes at least one emulated managementnetwork adapter; wherein the at least one facility of each hostoperating system includes at least one host interface; wherein thevirtualization components of each virtual computer include at least onevirtual interface; and wherein said mapping includes mapping said atleast one emulated management network adapter of each storage serversystem instance onto said at least one host interface of the respectivehost operating system via said at least one virtual interface of therespective virtual computer.
 19. The method of claim 14 furtherincluding receiving, via an emulated management network adapter withinsaid guest operating system of said specific storage server instance,the user command into the respective virtual computer from the firsthost computer.
 20. The method of claim 14 wherein said user command is arequest to retrieve data of said specified virtual volume stored on thesimulated storage device, and wherein said manipulating comprisesretrieving the requested data of said specified virtual volume from thesimulated storage device of the different storage system instance, andwherein the method further includes sending the retrieved data of saidspecified virtual volume out of the respective virtual computer to therespective host computer for subsequent access by said user.
 21. Themethod of claim 14 wherein said user command is a request to write datato said specified virtual volume stored on the simulated storage deviceof the different storage system instance, and wherein said manipulatingcomprises writing said data to said specified virtual volume stored onthe simulated storage device of the different storage system instance.22. The method of claim 21 further including sending, to a host storagedevice of the host computer operating the virtual computer including thedifferent storage system instance, a copy of the data written to saidspecified virtual volume stored on the simulated storage device of thedifferent storage system instance.
 23. The method of claim 14: whereinsaid at least one facility of each storage server system instanceincludes at least one simulated flashcard for receiving one or more ofsimulated program code and simulated data; wherein the at least onefacility of each host operating system includes a host storage device ofthe respective host computer; wherein the virtualization components ofeach virtual computer include a virtual storage device; and wherein saidmapping includes mapping the simulated flashcard of each storage serversystem instance onto said host storage device of the respective hostcomputer via said virtual storage device of the respective virtualcomputer.
 24. A virtualized clustered storage server system, comprising:a first host computer and a second host computer, each of said firsthost computer and said second host computer having a host operatingsystem; a first virtual computer operating on the first host computerand a second virtual computer operating on the second host computer,each of said first virtual computer and said second virtual computerhaving one or more virtualization components and a guest operatingsystem, said guest operating system being hosted by said host operatingsystem of the respective host computer; and at least one networkinterconnecting said first host computer and said second host computer,wherein each of said first virtual computer and said second virtualcomputer comprises a storage server system instance, the storage serversystem instance comprising said guest operating system and at least onefacility of the simulated storage server system including at least onesimulated storage device for storing data of at least one virtualvolume, wherein the storage server system instances and the simulatedstorage devices execute within the virtual computers to simulateoperation of the virtualized clustered storage server system, whereineach storage server system instance is executed as the guest operatingsystem, wherein the first host computer is operative to, receive acommand from a user to manipulate data of a specified virtual volume ofthe virtualized clustered storage server system, wherein the usercommand is directed to the storage server system instance of the firstvirtual computer, wherein the specified virtual volume is provided bythe at least one simulated storage device of the storage server systeminstance of the second virtual computer, and route the received usercommand to the simulated storage server system of the first virtualcomputer through a virtual interface, wherein the storage server systeminstance of the first virtual computer, responsive to receipt of therouted received user command, is operative to transmit a request tomanipulate the data of the specified virtual volume to the storageserver system instance of the second virtual computer, wherein thestorage server system instance of the second virtual computer isoperative to manipulate the data of the specified virtual volume inaccordance with the user command, and wherein said at least one facilityof each storage server system instance is mapped onto at least onecorresponding facility of said host operating system of the respectivehost computer via the virtualization components of the respectivevirtual computer.
 25. The system of claim 24: wherein said at least onefacility of each storage server system instance includes at least oneemulated cluster network adapter; wherein the at least one facility ofeach host operating system includes at least one host interface; whereinthe virtualization components of each virtual computer include at leastone virtual interface; and wherein said at least one emulated clusternetwork adapter of each storage server system instance is mapped ontosaid at least one host interface of the respective host operating systemvia said at least one virtual interface of the respective virtualcomputer.
 26. The system of claim 24: wherein each of the first virtualcomputer and the second virtual computer has, within each respectiveguest operating system of the first and second virtual computers, atleast one emulated cluster network adapter; and wherein the storageserver system instance of each one of the first and second virtualcomputers is operative to communicate, through the respective first andsecond host computers, with the storage server system instance of theother one of the first and second virtual computers over said at leastone network via the respective emulated cluster network adapters.